/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package MODELO;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.DefaultComboBoxModel;

/**
 *
 * @author O2
 */
public class DAOEntidadProducto extends ManejadorBaseDatos implements IDAOPersistencia{

    public DAOEntidadProducto() throws Exception {
        super();
    }

    public DAOEntidadProducto(String driver, String servidor, String url, String usuarioBD, String passwordUsuarioBD, String nombreBD) throws Exception {
        super(driver, servidor, url, usuarioBD, passwordUsuarioBD, nombreBD);
    }

    public DefaultComboBoxModel getListaProducto(String idtipoProducto) {
        DefaultComboBoxModel model = new DefaultComboBoxModel();
        Connection conn = getConexion();
        try {
            CallableStatement proc = conn.prepareCall(" CALL listarProductos(?) ");
            proc.setString("idTipoProducto", idtipoProducto);
            ResultSet res = proc.executeQuery();
            while (res.next()) {
                model.addElement(res.getString("nombre"));
            }
            res.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
        desconectar();
        return model;
    }
    
    public String getObtenerIdProducto(String nombreProd) {
        String rpta = "";

        Connection conn = getConexion();
        try {
            CallableStatement proc = conn.prepareCall(" CALL obtenerIdProducto(?) ");
            proc.setString("nombreProduct", nombreProd);
            ResultSet res = proc.executeQuery();
            while (res.next()) {
                rpta = res.getString("idProducto");
            }
            res.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
        desconectar();
        return rpta;
    }
    
    public String getObtenerPrecioProduct(String nombreProd) {
        String rpta = "";

        Connection conn = getConexion();
        try {
            CallableStatement proc = conn.prepareCall(" CALL obtenerPrecioProduct(?) ");
            proc.setString("nombreProduct", nombreProd);
            ResultSet res = proc.executeQuery();
            while (res.next()) {
                rpta = res.getString("precio");
            }
            res.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
        desconectar();
        return rpta;
    }
    
    @Override
    public int insertar(IEntidad objeto) throws Exception {
        int rpta = 0;
        EntidadProducto miEntidadProducto= (EntidadProducto) objeto;
        Connection conn = getConexion();
        try {
            // se crea instancia a procedimiento, los parametros de entrada y salida se simbolizan con el signo ?
            CallableStatement proc = conn.prepareCall(" CALL insertarProducto(?,?,?)");
            //se cargan los parametros de entrada
            proc.setString("nombreprod", miEntidadProducto.getNombre());//Tipo int
            proc.setString("precioproduc", miEntidadProducto.getPrecio());//Tipo int
            proc.setString("FkTipoProduct", miEntidadProducto.getFK_tipoProducto());//Tipo String
            
            try {
                proc.execute();
                rpta = 1;
            } catch (Exception ex) {
                rpta = 0;
            }
        } catch (Exception e) {
            System.out.println(e);
        }
        desconectar();
        return rpta;
    }

    @Override
    public int borrar(String condicion) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public int modificar(IEntidad objeto) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
    
}
